The invention relates to isochronous buses. In particular, it relates to methods and apparatuses for allocating the limited number of isochronous channel numbers available on such busses among the devices on the bus that provide isochronous data streams.
Isochronous buses and networks are able to transmit isochronous data packets within particular time slots. Isochronous buses include but are not limited to Apple Computer""s FireWire (R) bus or Sony""s i.LINK (R) bus. These are also known as IEEE-1394, IEEE-1394a or IEEE-1394.B buses; the Institute for Electrical and Electronic Engineers (IEEE) has adopted, or is in the process of adopting, uniform standards for these buses so that devices from different manufactures can communicate.
The ability these buses have to send information isochronously is particularly important for audio data or video data to be presented to a user via a visual display or an audio output device such as speakers. When transmitted isochronously, the audio/video data is handled in a manner that attempts to guarantee that the data arrives on time at the device that will be reproducing or presenting it to the user. On time delivery of each isochronous packet within its particular time slot eliminates or reduces visual and audio glitches, pops and dead spots, which are often result when digital audio/video data is late or missing.
Further, if a problem does occasionally occur and there is a momentary problem, then the presentation should quickly be back to normal. This is because the next isochronous audio/video data packet is transmitted in its appropriate time slot regardless of what may have happened in prior time slots.
Electronic devices, such as camcorders and video game playing devices, are currently being marketed that will allow homes and offices connect a number of different types of source and destination devices, all of which can then share isochronous audio/video data. The user can mix and match a wide variety of program or entertainment sources with television sets, stereos and other presentation devices throughout a home or office. Sources of isochronous audio/video data include, but are not limited to, video cassette recorders (VCRs), digital video disk (DVD) players, and cable, satellite or terrestrial broadcast receivers.
Needless to say, getting such a wide variety of devices to successfully communicate with each other presents a substantial challenge, particularly if it is to be done in a manner that is easy for a consumer to use and to initially set up. He or she should not be forced to master esoteric details of how networked audio/video devices operate individually, nor how they inter-operate when connected together.
One example of this challenge is to assign isochronous channel numbers. Each packet of isochronous data is tagged with a channel number. Like the channel number used in broadcast television, any device on the network that wishes to reproduce that particular stream of isochronous audio/video data simply accepts and processes those isochronous packets that are tagged with the corresponding channel number.
For example, isochronous channel 13 could contain the movie Gone with The Wind, which a housewife is having shown both on the home theater in her den and on the small television set in her kitchen. Thus, she need not stop the movie whenever she has to go and check on dinner. At the same time, isochronous channel number 1 could contain the broadcast sporting event that travels over the same bus from the rooftop satellite receiver to the bedroom television set that her husband is watching.
Unlike the channel numbers of television, isochronous channel numbers are very dynamic. Isochronous channel 3 does not consistently mean the XYZ broadcast network, or the local radio station. Whenever any user of the home network starts playback of music, tunes into a broadcast television show, etc. the use of another isochronous channel is initiated. Once a channel is discontinued, then there is no more meaning associated with that channel number; that channel number is available for the next show, movie, game or other entertainment or educational activity.
Nevertheless, isochronous channel numbers can not be assigned willy nilly. Each isochronous channel must have a number that is unique among those currently active. Otherwise, two or more audio/video streams can be intermixed.
The bus structures specified by the IEEE allow one of the devices on the bus to manage this process by becoming the isochronous resource manager. For each of the 64 isochronous channels allowed within a single bus, the isochronous resource manager maintains a flag that indicates whether or not that particular channel number is in use. A device that is about to initiate a new isochronous channel can access these flags, locate an un-flagged and thus unused channel and set that flag, thus claiming that channel number for itself.
One goal of the design of these buses is that there need not be a central device, such as a personal computer, that monitors and controls the bus activity. Another goal is to minimize the cost of devices that attach to such buses. Thus, the specifications do not require that there be an isochronous resource manager device on each bus. If there is no isochronous resource manager on the bus, then the IEEE specifications do not provide a way for a device to determine what isochronous channels are currently active so as to select an unused one for a new audio/video stream.
An example device that can be coupled to other devices via an isochronous bus is a digital video camera recorder (DV camcorder). A DV camcorder can be connected via an isochronous bus to a variety of display devices, for example to a large screen television so that the family could watch what Dad is recording as he captures daughter Susie""s first steps .
However, DV camcorders are being marketed that make no attempt to select an available isochronous stream number. Rather, then simply output the isochronous audio/video stream that they are recording on the highest numbered isochronous stream, which according to the IEEE specifications is reserved for broadcast isochronous streams that are to be received and displayed or processed by every device on the bus.
This creates two problems. First, it is impossible to simultaneously operate two such DV camcorders on the same bus because their use of the same isochronous channel number would conflict. Second, it forces all devices attached to the bus to listen to the audio/video stream that such DV camcorders are sending on the broadcast isochronous channel. If, for example, son Johnny is using the DV camcorder for a school project, then Mom""s and Dad""s televisions may show the broadcast channel, regardless of whether or not they wanted to watch his work as it progresses.
Thus there is a need for a simple, straightforward and low cost method and apparatus to select the isochronous channel number used in transferring an isochronous data stream over a bus from a source device to a destination device. This is particularly needed for buses that do not have an isochronous resource manager.
According to this invention, the device identifier of the source device is obtained. A device identifier suitable in some embodiments of the invention is the physical identifier within the node identifier of the source device within an IEEE-1394, IEEE-1394a or an IEEE-1394.B bus. If the source device is not currently outputting another isochronous stream over the bus, then an isochronous channel number that corresponds to the source device identifier can be used. In some embodiments, each device is entitled to use an isochronous channel number equal to its device identifier and thus need not check to see if that channel is otherwise in use.
When multiple isochronous channels are to be output from the same device, then some embodiments use the device identifier of a device to which the isochronous stream is to be transmitted, when the isochronous channel of that number is available. Some embodiments use the highest available channel number below the isochronous channel reserved for broadcasting. Some embodiments listen on the bus for isochronous transmissions to determine that a particular isochronous channel is not currently in use.